//
// Created by You, Zhengzhong on 8/2/24.
//

#ifndef INCLUDE_SOLVER_INTERFACE_SOLVER_GRB_HPP_
#define INCLUDE_SOLVER_INTERFACE_SOLVER_GRB_HPP_

#include "technique_control.hpp"

#if SOLVER_TYPE == 0
#include "gurobi_c.h"
#include "gurobi_c++.h"

using SOLVERmodel = GRBmodel;
using SOLVERenv = GRBenv;
#define SOLVER_EQUAL GRB_EQUAL
#define SOLVER_GREATER_EQUAL GRB_GREATER_EQUAL
#define SOLVER_LESS_EQUAL GRB_LESS_EQUAL
#define SOLVER_BINARY GRB_BINARY
#define SOLVER_INTEGER GRB_INTEGER
#define SOLVER_CONTINUOUS GRB_CONTINUOUS
#define SOLVER_OPTIMAL 2
#define SOLVER_SUBOPTIMAL 13
#define SOLVER_NUMERIC 12
#define SOLVER_MIP_INFEASIBLE 3
#define SOLVER_INF_OR_UNBD 4
#define SOLVER_UNBOUNDED 5
#define SOLVER_PRIMAL_SIMPLEX 0
#define SOLVER_DUAL_SIMPLEX 1
#define SOLVER_BARRIER 2
#define SOLVER_CROSSOVER_DOWN 0
#define SOLVER_CROSSOVER_DEFAULT (-1)
#define SOLVER_MAX_SENSE (-1)
#define SOLVER_TIME_LIMIT 9
#define SOLVER_INFINITY GRB_INFINITY
#endif

#endif //INCLUDE_SOLVER_INTERFACE_SOLVER_GRB_HPP_
